// 7-2 通讯录排序
#include<stdio.h>
struct AddressBook{
	//声明 通信录结构体 
	char name[30];
	int birthday;
	char num[30];
};
int main(){
	int length,i,j;
	//输入长度 
	scanf("%d",&length);
	//动态定义，通讯录的数组，冒泡排序中间变量 
	struct AddressBook Array[length],max;
	//输入通讯录 
	for( i=0;i<length;i++){
		scanf("%s %d %s",Array[i].name,&Array[i].birthday,Array[i].num);
	}
	
	//测试输入结果 
//	for( i=0;i<length;i++){
//		printf("%s %d %s\n",Array[i].name,Array[i].birthday,Array[i].num);
//	}

	//排序 
	for( i=0; i<length-1; i++){
		for( j = 0;j < length-i-1; ++j){
			
			if(Array[j].birthday > Array[j+1].birthday){
				
				max=Array[j];
				Array[j]=Array[j+1];
				Array[j+1]=max;
			}
		}
	}
	//格式化输出结果 
	for( i=0;i<length;i++){
		printf("%s %d %s\n",Array[i].name,Array[i].birthday,Array[i].num);
	}
	return 0; 
}